package pe.com.bbva.ge.domain.solicitud;

import java.math.BigInteger;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

import pe.com.bbva.ge.domain.base.Auditoria;
import pe.com.bbva.ge.domain.configuracion.Denominacion;
import pe.com.bbva.ge.domain.configuracion.Valor;

/**
 * Remito generated by hbm2java
 */
@Entity
@Table(name = "SOL_REMITO")
public class Remito extends Auditoria {
	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(unique = true, nullable = false, precision = 19)
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_REMITO")
	@TableGenerator(name = "SEQ_REMITO", 
	table = Remito.SEQ_TABLA, 
	pkColumnName = Remito.SEQ_TABLA_PK, 
	initialValue = 1, 
	valueColumnName = Remito.SEQ_TABLA_COLUMN, 
	pkColumnValue = "pe.com.bbva.ge.domain.solicitud.Remito", 
	allocationSize = 1)	
	private long id;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	
	//

	//uni-directional many-to-one association to Remito
	@ManyToOne
	@JoinColumn(name="DESTINO")
	private Destino destino;

	private String numero;

	//uni-directional many-to-one association to Remito
	@ManyToOne
	@JoinColumn(name="TIPO")
	private Valor tipo;

	//bi-directional many-to-one association to DetalleRemito
	@OneToMany(mappedBy="remito", cascade={CascadeType.ALL})
	private List<DetalleRemito> detalleRemitos;

	public Destino getDestino() {
		return this.destino;
	}

	public void setDestino(Destino destino) {
		this.destino = destino;
	}

	public String getNumero() {
		return this.numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public Valor getTipo() {
		return this.tipo;
	}

	public void setTipo(Valor tipo) {
		this.tipo = tipo;
	}

	public List<DetalleRemito> getDetalleRemitos() {
		return this.detalleRemitos;
	}

	public void setDetalleRemitos(List<DetalleRemito> detalleRemitos) {
		this.detalleRemitos = detalleRemitos;
	}

	public DetalleRemito addDetalleRemito(DetalleRemito detalleRemito) {
		getDetalleRemitos().add(detalleRemito);
		detalleRemito.setRemito(this);

		return detalleRemito;
	}

	public DetalleRemito removeDetalleRemito(DetalleRemito detalleRemito) {
		getDetalleRemitos().remove(detalleRemito);
		detalleRemito.setRemito(null);

		return detalleRemito;
	}
}
